A graphical user interface (GUI) is an important part of most modern software applications. In a typical application development process one of the first items to be delivered to an end user is a GUI. It is part of the prototype that is shown to the end user during the requirements gathering phase (known in application development). A GUI captures the user's perspective of the application. Once the client approves a prototype, application development proceeds. During application development a GUI is enriched with code enabling various functions like navigation, server interaction, and enabling or disabling action buttons in an interface among other things. All of this capability takes a considerable amount of effort to develop and enable. Developers find it challenging to adhere to documented GUI standards. The process of verifying that all of the GUI windows adhere to pre-set GUI standards is largely manual and highly error prone.
Development of a GUI is typically done using one of many commercial development environments that are available. Some examples include Visual Basic, Visual Age and Power Builder. These environments require each of possibly multiple GUI windows to be configured individually. Individual treatment promotes difficulty in enforcing application GUI standards as described above. More importantly, however, similarities that do exist between different user interactions over multiple windows are not exploited. That is to say that common capabilities are individually painted in each window where they exist.
Although developers' tools such as those mentioned in the above paragraph provide very good support for quickly painting individual GUI screens, when it comes to writing GUI functionality and adhering to standards, the programmer must perform manually. Another drawback with prior-art development procedures is that GUI development proceeds independent of the associated application development making it difficult to ensure consistency between the application and the controls used to display the application values.
It has occurred to the inventor that many of the above-described problems in prior art could be overcome if certain GUI patterns could be identified and a tool was available that could generate code for instances of these GUI patterns.
Therefore, what clearly is needed is a method and apparatus that exploits existing functional similarities between various GUI windows of an application during development and generates the code to provide improved productivity and consistency in all of the application windows sharing common capabilities. Such a method and apparatus would enable developers to write less code and ensure that GUI standards are adhered to in a consistent manner across the board.